/*
*	Copyright 2014-2015 Davide Bettoni (https://www.linkedin.com/in/dbettoni)
*	
*	Licensed under the Apache License, Version 2.0 (the "License");
*	you may not use this file except in compliance with the License.
*	You may obtain a copy of the License at
*	
*	    http://www.apache.org/licenses/LICENSE-2.0
*	
*	Unless required by applicable law or agreed to in writing, software
*	distributed under the License is distributed on an "AS IS" BASIS,
*	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*	See the License for the specific language governing permissions and
*	limitations under the License.
*/

package it.agapps.common.collections;

import it.agapps.common.functions.IMatcher;
import it.agapps.common.functions.ITransformer;

import java.util.Collection;

public class Transformer<
	E extends Object, // tipo degli elementi contenuti nella collection da cui viene eseguita l'estrazione
	R extends Object // tipo degli elementi restituiti nella lista di ritorno
> {

	public R transformFirst(Collection<E> collection, IMatcher<E> matcher, ITransformer<E, R> transformer) {
		R ret = null;
		for (E fr : collection) {
			if (matcher.match(fr)) {
				ret = transformer.transform(fr);
				break;
			}
		}
		return ret;
	}
}
